#include "ipc.h"
int main(int argc,char *argv[])
{
	//可在在命令行第一参数指定一个进程睡眠秒数,以调解进程执行速度
	if(argv[1] != NULL) rate = atoi(argv[1]);
	else rate = 1; //不指定为1秒
	signal(SIGINT,(sighandler_t)sigcat); //注册一个本进程处理键盘中断的函数
	//初始化同步机制
	ipc_init();
	//循环执行模拟消费者不断取产品
	while(1){
		//如果无产品消费者阻塞
		P(cons_sem);
		//如果另一消费者正在取产品,本消费者阻塞
		P(cmtx_sem);
		//用读一字符的形式模拟消费者取产品,报告本进程号和获取的字符及读取的位置
		printf("%d consumer get: %c from Buffer[%d]\n",getpid(),buff_ptr[*cget_ptr],*cget_ptr);
		//模拟读延迟
		sleep(rate);
		//读取位置循环下移
		*cget_ptr = (*cget_ptr+1) % buff_num;
		//唤醒阻塞的消费者
		V(cmtx_sem);
		//唤醒阻塞的生产者
		V(prod_sem);
	}
	return EXIT_SUCCESS;
}
